#!/usr/bin/env python3
"""
智能研究报告生成器 - 主入口文件

使用示例:
    python main.py --topic "人工智能在医疗中的应用" --type comprehensive
    python main.py --interactive
    python main.py --topic "区块链" --type brief --max-results 5
"""

import argparse
import asyncio
import os
import sys
from pathlib import Path

# 添加src到Python路径
sys.path.insert(0, str(Path(__file__).parent / "src"))

from src.agents.research_agent import ResearchAgent
from dotenv import load_dotenv

load_dotenv()

async def main():
    """主函数"""
    parser = argparse.ArgumentParser(description='智能研究报告生成器')
    parser.add_argument('--topic', type=str, help='研究主题')
    parser.add_argument('--type', type=str, choices=['comprehensive', 'brief', 'technical'], 
                       default='comprehensive', help='报告类型')
    parser.add_argument('--max-results', type=int, default=10, help='最大搜索结果数量')
    parser.add_argument('--interactive', action='store_true', help='交互模式')
    parser.add_argument('--no-save', action='store_true', help='不保存到文件')
    parser.add_argument('--config', action='store_true', help='显示当前配置')
    
    args = parser.parse_args()
    
    # 初始化研究代理
    agent = ResearchAgent()
    
    if args.config:
        print("当前配置:")
        config = agent.get_config()
        for key, value in config.items():
            print(f"  {key}: {value}")
        return
    
    if args.interactive:
        await agent.interactive_mode()
        return
    
    if not args.topic:
        print("错误: 请提供研究主题或使用 --interactive 模式")
        print("使用 --help 获取更多信息")
        return
    
    try:
        print(f'🤖 开始生成关于{args.topic}的研究报告...')
        
        report = await agent.generate_research_report(
            topic=args.topic,
            report_type=args.type,
            max_search_results=args.max_results,
            save_to_file=not args.no_save
        )
        
        print("\n✅ 报告生成完成！")
        print(f"📊 统计信息:")
        print(f"   搜索结果: {report['statistics']['search_results_count']} 个")
        print(f"   生成时间: {report['statistics']['generation_time_seconds']:.2f} 秒")
        print(f"   报告长度: {len(report['content'])} 字符")
        
        if not args.no_save:
            print(f"📁 保存位置: {report.get('file_path', '未保存')}")
            
    except Exception as e:
        print(f"❌ 执行失败: {e}")
        sys.exit(1)

if __name__ == "__main__":
    asyncio.run(main())